<!DOCTYPE html>
<html lang="en-us">
  <head>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="robots" content="noodp"/>
  <meta name="author" content="Mr.wei">
  
  
  
  <link rel="prev" href="http://blog.mr-wei.cn/2019/%E5%A2%9E%E9%87%8F%E5%BC%8Fpid/" />
  <link rel="next" href="http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E8%BF%9E%E6%8E%A5%E6%8C%87%E5%AE%9A%E5%A4%96%E8%AE%BE/" />
  <link rel="canonical" href="http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/" />
  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
  <link rel="manifest" href="/site.webmanifest">
  <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
  <meta name="msapplication-TileColor" content="#da532c">
  <meta name="theme-color" content="#ffffff">
  <title>
       
       
           NRF52840作Central之一主多从 | Mr.wei
       
  </title>
  <meta name="title" content="NRF52840作Central之一主多从 | Mr.wei">
    
  
  <link rel="stylesheet" href="/font/iconfont.css">
  <link rel="stylesheet" href="/css/main.min.css">


  
  
 

<script type="application/ld+json">
 "@context" : "http://schema.org",
    "@type" : "BlogPosting",
    "mainEntityOfPage": {
         "@type": "WebPage",
         "@id": "http:\/\/blog.mr-wei.cn"
    },
    "articleSection" : "posts",
    "name" : "NRF52840作Central之一主多从",
    "headline" : "NRF52840作Central之一主多从",
    "description" : " 环境  SDK：nRF5_SDK_15.2.0 example：ble_app_uart_c 相关硬件  nRF52840-Dongle nRF52840-DK   目的 基于NRF52840作Central之连接指定外设文章中实现的功能增加\n 一个主设备链接两个从设备 根据报文中的MAC地址区分要和哪个从设备通信 从设备上传的信息，透传时在后面追加从设备的MAC  创建多个从机实例实现一主多从  修改sdk_config.h  添加依赖的文件和路径  修改main.c文件  修改main.c文件中的nus_c_init()函数  修改main.c文件中的ble_evt_handler()函数  修改main.c文件中的db_disc_handler()函数  修改main.c文件ble_evt_handler()函数，再次开启扫描  修改main.c文件中的ble_nus_chars_received_uart_print()函数注释回显  修改main.c文件中的bsp_event_handler() 初始化时没有初始化button只是初始化了led因此直接注释掉按键断开连接   实现根据mac地址区分从设备  修改main.c文件定义临时存储mac地址的空间  在nrf_ble_scan.c中声明  修改 ble_nus_c.h文件中的ble_nus_c_s结构体添加存放mac的空间  修改nrf_ble_scan.c文件中的nrf_ble_scan_connect_with_target()函数在广播包文中得到mac地址 从设备在建立链接后，会将mac地址设置为私有不可解析，因此需要在连接前拿到地址  修改main.c文件中的ble_evt_handler()函数建立链接后将mac地址存放到实例中  修改main.c文件中的ble_nus_chars_received_uart_print()函数，实现可以得知那个从机发送的消息，并将消息透传时添加mac地址  修改main.c文件中的ble_nus_c_evt_handler()函数  修改main.c文件中的uart_event_handle()函数，实现判断报文中的mac地址，向指定的从设备发送命令  修改main.c文件中的ble_evt_handler()函数实现断开时清空示例的mac   ",
    "inLanguage" : "en-us",
    "author" : "Mr.wei",
    "creator" : "Mr.wei",
    "publisher": "Mr.wei",
    "accountablePerson" : "Mr.wei",
    "copyrightHolder" : "Mr.wei",
    "copyrightYear" : "2019",
    "datePublished": "2019-09-03 09:48:52 \x2b0800 CST",
    "dateModified" : "2019-09-03 09:48:52 \x2b0800 CST",
    "url" : "http:\/\/blog.mr-wei.cn\/2019\/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E\/",
    "wordCount" : "34",
    "keywords" : [ "NRF52840", "Mr.wei"]
}
</script>

</head>

  


  <body class="">
    <div class="wrapper">
        <nav class="navbar">
    <div class="container">
        <div class="navbar-header header-logo">
        	<a href="javascript:void(0);" class="theme-switch"><i class="iconfont icon-xihuan"></i></a>&nbsp;<a href="http://blog.mr-wei.cn">Mr.wei</a>
        </div>
        <div class="menu navbar-right">
                
                
                <a class="menu-item" href="/posts/" title="">Blog</a>
                
                <a class="menu-item" href="http://balance.mr-wei.cn" title="">BalanceCar</a>
                
                <a class="menu-item" href="/categories/" title="">Categories</a>
                
                <a class="menu-item" href="/tags/" title="">Tags</a>
                
                <a class="menu-item" href="/about/" title="About">About</a>
                
        </div>
    </div>
</nav>
<nav class="navbar-mobile" id="nav-mobile" style="display: none">
     <div class="container">
        <div class="navbar-header">
            <div>  <a href="javascript:void(0);" class="theme-switch"><i class="iconfont icon-xihuan"></i></a>&nbsp;<a href="http://blog.mr-wei.cn">Mr.wei</a></div>
            <div class="menu-toggle">
                <span></span><span></span><span></span>
            </div>
        </div>
     
          <div class="menu" id="mobile-menu">
                
                
                <a class="menu-item" href="/posts/" title="">Blog</a>
                
                <a class="menu-item" href="http://balance.mr-wei.cn" title="">BalanceCar</a>
                
                <a class="menu-item" href="/categories/" title="">Categories</a>
                
                <a class="menu-item" href="/tags/" title="">Tags</a>
                
                <a class="menu-item" href="/about/" title="About">About</a>
                
        </div>
    </div>
</nav>







    	 <main class="main">
          <div class="container">
      		
<article class="post-warp" itemscope itemtype="http://schema.org/Article">
    <header class="post-header">
        <h1 class="post-title" itemprop="name headline">NRF52840作Central之一主多从</h1>
        <div class="post-meta">
                Written by <a itemprop="name" href="http://blog.mr-wei.cn" rel="author">Mr.wei</a> with ♥ 
                <span class="post-time">
                on <time datetime=2019-09-03 itemprop="datePublished">September 3, 2019</time>
                </span>
                in
                <i class="iconfont icon-folder"></i>
                <span class="post-category">
                        
                </span>
        </div>
    </header>
    <div class="post-content">
        

        
            
        

        
        
     
          
          
          

          
          
          

          

<h1 id="环境">环境</h1>

<ul>
<li>SDK：nRF5_SDK_15.2.0</li>
<li>example：ble_app_uart_c</li>
<li>相关硬件

<ul>
<li>nRF52840-Dongle</li>
<li>nRF52840-DK</li>
</ul></li>
</ul>

<h1 id="目的">目的</h1>

<p>基于<a href="http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E8%BF%9E%E6%8E%A5%E6%8C%87%E5%AE%9A%E5%A4%96%E8%AE%BE/" rel="nofollow noreferrer" target="_blank">NRF52840作Central之连接指定外设</a>文章中实现的功能增加</p>

<ol>
<li>一个主设备链接两个从设备</li>
<li>根据报文中的MAC地址区分要和哪个从设备通信</li>
<li>从设备上传的信息，透传时在后面追加从设备的MAC</li>
</ol>

<!-- more -->

<h1 id="创建多个从机实例实现一主多从">创建多个从机实例实现一主多从</h1>

<ul>
<li>修改sdk_config.h
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-0-2.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>添加依赖的文件和路径
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-49-23.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure>
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-16-54.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-22-55.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的nus_c_init()函数
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-54-27.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_evt_handler()函数
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-29-1.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的db_disc_handler()函数
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-32-54.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件ble_evt_handler()函数，再次开启扫描
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-53-57.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_nus_chars_received_uart_print()函数注释回显
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-51-47.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的bsp_event_handler()
初始化时没有初始化button只是初始化了led因此直接注释掉按键断开连接
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-54-12.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
</ul>

<h1 id="实现根据mac地址区分从设备">实现根据mac地址区分从设备</h1>

<ul>
<li>修改main.c文件定义临时存储mac地址的空间
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-50-9.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>在nrf_ble_scan.c中声明
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-54-41.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改 ble_nus_c.h文件中的ble_nus_c_s结构体添加存放mac的空间
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-55-20.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改nrf_ble_scan.c文件中的nrf_ble_scan_connect_with_target()函数在广播包文中得到mac地址
从设备在建立链接后，会将mac地址设置为私有不可解析，因此需要在连接前拿到地址
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-54-55.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_evt_handler()函数建立链接后将mac地址存放到实例中
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/16-54-40.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_nus_chars_received_uart_print()函数，实现可以得知那个从机发送的消息，并将消息透传时添加mac地址
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-50-43.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure>
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-51-23.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_nus_c_evt_handler()函数
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-52-59.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的uart_event_handle()函数，实现判断报文中的mac地址，向指定的从设备发送命令
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/15-52-35.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
<li>修改main.c文件中的ble_evt_handler()函数实现断开时清空示例的mac
<figure><img src="/images/ring.svg" data-sizes="auto" data-src="http://pan.mr-wei.cn/image/Blog_image/NRF52840%E4%BD%9CCentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/17-25-6.png" alt="" class="lazyload"><figcaption class="image-caption"></figcaption></figure></li>
</ul>

    </div>

    <div class="post-copyright">
             
            <p class="copyright-item">
                <span>Author:</span>
                <span>Mr.wei </span>
                </p>
            
           
             
            <p class="copyright-item">
                    <span>Link:</span>
                    <a href=http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/>http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E4%B8%80%E4%B8%BB%E5%A4%9A%E4%BB%8E/</span>
            </p>
            
             
            <p class="copyright-item lincese">
                本文采用<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/" #target="_blank">知识共享署名-非商业性使用 4.0 国际许可协议</a>进行许可
            </p>
            
    </div>

  
    <div class="post-tags">
        
            <section>
            <i class="iconfont icon-tag"></i>Tag(s): 
            
            <span class="tag"><a href="http://blog.mr-wei.cn/tags/nrf52840/">
                    #NRF52840</a></span>
            
            </section>
        
        <section>
                <a href="javascript:window.history.back();">back</a></span> · 
                <span><a href="http://blog.mr-wei.cn">home</a></span>
        </section>
    </div>

    <div class="post-nav">
        
        <a href="http://blog.mr-wei.cn/2019/%E5%A2%9E%E9%87%8F%E5%BC%8Fpid/" class="prev" rel="prev" title="增量式PID"><i class="iconfont icon-left"></i>&nbsp;增量式PID</a>
         
        
        <a href="http://blog.mr-wei.cn/2019/nrf52840%E4%BD%9Ccentral%E4%B9%8B%E8%BF%9E%E6%8E%A5%E6%8C%87%E5%AE%9A%E5%A4%96%E8%AE%BE/" class="next" rel="next" title="NRF52840作Central之连接指定外设">NRF52840作Central之连接指定外设&nbsp;<i class="iconfont icon-right"></i></a>
        
    </div>

    <div class="post-comment">
          
                 
          
    </div>
</article>
          </div>
		   </main>
      <footer class="footer">
    <div class="copyright">
        &copy;
        
        <span itemprop="copyrightYear">2018 - 2019</span>
        
        <span class="with-love">
    	 <i class="iconfont icon-love"></i> 
         </span>
         
            <span class="author" itemprop="copyrightHolder"><a href="http://blog.mr-wei.cn">Mr.wei</a> | </span> 
         

         
            <a href="http://www.miibeian.gov.cn/" target="_blank" rel="external nofollow">冀ICP备 - 18032379号 </a> |
         
		  <span>Powered by <a href="https://gohugo.io/" target="_blank" rel="external nofollow">Hugo</a> & <a href="https://github.com/liuzc/leaveit" target="_blank" rel="external nofollow">LeaveIt</a></span> 
    </div>

	
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [['$','$'], ['\\(','\\)']],
            displayMath: [['$$','$$'], ['\[','\]']],
            processEscapes: true,
            processEnvironments: true,
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
            TeX: {
                equationNumbers: { autoNumber: "AMS" },
                extensions: ["AMSmath.js", "AMSsymbols.js"]
            }
        }
    });
</script>
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script>
	
	

</footer>












    
     <link href="//lib.baomitu.com/lightgallery/1.6.11/css/lightgallery.min.css" rel="stylesheet">  
      
     <script src="/js/vendor_gallery.min.js" async="" ></script>
    
  



     </div>
  </body>
</html>
